Fiddler对安卓高版本进行抓包解决方案以及分析 进阶二

您所在的位置:网站首页 fiddler everywhere手机抓包 Fiddler对安卓高版本进行抓包解决方案以及分析 进阶二

Fiddler对安卓高版本进行抓包解决方案以及分析 进阶二

2023-04-30 10:22| 来源: 网络整理| 查看: 265

今天是2021年的最后一天了,多分享一些干货吧!看过上一章节教程后会有同学疑惑,我也一步一个脚印的,跟着流程走也设置了代理以及安装了证书,有的同学会发现 为什么手机不能够连接网络了呢?细心一点的同学会发现抓包抓的全部都是http协议的请求,没有一个https协议请求呢?然而有的同学却能够进行正常的抓取app得包呢?

从最最最基本得开始吧,

HTTP 协议发展至今,已经有二十多年的历史,整个发展的趋势主要是两个方向:效率 & 安全。

• 效率方面,从 HTTP1.0 的一次请求一个连接,到 HTTP1.1 的连接复用,到 SPDY/HTTP2 的多路复用,到 QUIC/HTTP3 的基于 UDP 传输,在效率方面越来越高效。

• 安全方面,从 HTTP 的明文,到 HTTP2 强制使用 TLSv1.2,到 QUIC/HTTP3 强制使用 TLSv1.3,越来越注重数据传输的安全性。总而言之,HTTP 协议的发展对,用户是友好的,但是对开发者而言却不那么友善。

•  抓包是每个程序员的必修技能之一,尤其是在接口调试和程序逆向方面具有广阔的用途。但是,随着越来越多的通信协议使用加密的 HTTPS,而且系统层面也开始强制规定使用 HTTPS,抓包似乎是显得越来越难了。

一、抓包原理

几乎所有网络数据的抓包,都是采用中间人的方式(MITM),包括大家常用的 Fiddler、Charles 等知名抓包工具,HttpCanary 同样是使用中间人的方式进行抓包。

从上面这个原理图,可以看出抓包的核心问题主要是两个:

MITM Server 如何伪装成真正的 Server;

MITM Client 如何伪装成真正的 Client;

第一个问题,MITM Server 要成为真正的 Server,必须能够给指定域名签发公钥证书,且公钥证书能够通过系统的安全校验。比如 Client 发送了一条 https://www.baidu.com 的网络请求,MITM Server 要伪装成百度的 Server,必须持有 www.baidu.com 域名的公钥证书并发给 Client,同时还要有与公钥相匹配的私钥。

MITM Server 的处理方式是从第一个 SSL/TLS 握手包 Client Hello 中提取出域名 www.baidu.com,利用应用内置的 CA 证书创建 www.baidu.com 域名的公钥证书和私钥。

创建的公钥证书在 SSL/TLS 握手的过程中发给 Client,Client 收到公钥证书后会由系统会对此证书进行校验,判断是否是百度公司持有的证书,但很明显这个证书是抓包工具伪造的。为了能够让系统校验公钥证书时认为证书是真实有效的,我们需要将抓包应用内置的 CA 证书手动安装到系统中,作为真正的证书发行商(CA),即洗白。这就是为什么,HTTPS 抓包一定要先安装 CA 证书。

第二个问题,MITM Client 伪装成 Client。由于服务器并不会校验 Client(绝大部分情况),所以这个问题一般不会存在。比如 Server 一般不会关心 Client 到底是 Chrome 浏览器还是 IE 浏览器,是 Android App 还是 iOS App。

当然,Server 也是可以校验 Client 的,这个后面分析。

二、Android6.0 及以下系统可以抓包,而 Android7.0 及以上系统不能抓包( 因为Android7.0+ 的版本新增了证书验证,所以 App 内不再像原来一样默认信任用户的证书) 三、解决方案

  1、让安卓开发解决,重新打包,对于安卓开发同学来说无非是多加几行代码的事,但是如果要想抓取别人产品的HTTPS包,那这种方式就行不通了。

  2、换一部Android6.0以下的手机/用系统6.0一下的模拟器安装app,可以解决这个问题

  3、Fiddler + VirtualXposed + JustTrustMe【主要讲解第三种方案】

四、解决过程以及方法

APP内置了对自家证书的校检,因此抓包时,会因为检测到自签名证书而拒绝联网。而Xposed能使用hook的方式来绕过它,所以VirtualXposed是一个免root的不错选择。

首先进入 Github 下载如下两个 Page(实在不行通过app浏览器下载VirtualXposed 以及 JustTrustMe ,很方便)

VirtualXposed:https://github.com/android-hacker/VirtualXposed JustTrustMe:https://github.com/Fuzion24/JustTrustMe 

 

1.使用如下 adb 命令分别安装两个 pages

    adb -s C7YVB20413007239 install D:\chomeDow\VirtualXposed_0.18.2.apk    adb -s C7YVB20413007239 install D:\chomeDow\JustTrustMe.apk

2.安装完成进入 VirtualXposed apk 应用,点击 6 个小点进入设置页面

3.进入设置页面,点击模块管理,勾选 JustTrustMe(我这里没有找到它,可能是我这个版本不需要在手动选择了,安装之后自动识别到了)重启之后我们重新进去设置页面,添加我们需要抓包的应用即可,我这里选择的钉钉做案例。

4.点击添加应用,选择需要抓包的软件安装:

5.配置 Fiddler 抓包

6.回到 VirtualXposed 上滑解锁,打开我们之前安装的企业微信,则发现 charles 已经成功抓取到钉钉的 HTTPS 的数据包 五、总结概述

总之一句话,如果能给开发商量让开发加几行代码,如果不指望开发那么就自己下载一个模拟器,降低安卓版本,都不想操作就安装   VirtualXposed  能使用hook的方式绕过它。

本文来自博客园,作者:ganfd,转载请注明原文链接:https://www.cnblogs.com/ganfd/p/15753762.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3